|
The Goertzel algorithm is a Digital Signal Processing (DSP) technique that provides a means for efficient evaluation of individual terms of the Discrete Fourier Transform (DFT), thus making it useful in certain practical applications, such as recognition of DTMF tones produced by the buttons pushed on a telephone keypad. The algorithm was first described by Gerald Goertzel in 1958. Like the DFT, the Goertzel algorithm analyses one selectable frequency component from a discrete signal.〔; also found in DSP Applications with the TMS320 Family, Vol. 1, Texas Instruments, 1989.〕 Unlike direct DFT calculations, the Goertzel algorithm applies a single real-valued coefficient at each iteration, using real-valued arithmetic for real-valued input sequences. For covering a full spectrum, the Goertzel algorithm has a higher order of complexity than Fast Fourier Transform (FFT) algorithms; but for computing a small number of selected frequency components, it is more numerically efficient. The simple structure of the Goertzel algorithm makes it well suited to small processors and embedded applications, though not limited to these. The Goertzel algorithm can also be used "in reverse" as a sinusoid synthesis function, which requires only 1 multiplication and 1 subtraction per generated sample.〔http://cs-www.cs.yale.edu/c2/images/uploads/AudioProc-TR.pdf〕 == The algorithm == The main calculation in the Goertzel algorithm has the form of a digital filter, and for this reason the algorithm is often called a ''Goertzel filter''. The filter operates on an input sequence, , in a cascade of two stages with a parameter, , giving the frequency to be analysed, normalised to cycles per sample. The first stage calculates an intermediate sequence, : :(1) The second stage applies the following filter to , producing output sequence . :(2) The first filter stage can be observed to be a second-order IIR filter with a direct form structure. This particular structure has the property that its internal state variables equal the past output values from that stage. Input values for are presumed all equal to 0. To establish the initial filter state so that evaluation can begin at sample , the filter states are assigned initial values . To avoid aliasing hazards, frequency is often restricted to the range 0 to 1/2 (see Nyquist–Shannon sampling theorem); using a value outside this range is not meaningless, but is equivalent to using an aliased frequency inside this range, since the exponential function is periodic with a period of 1 cycle per sample in ''f''. The second stage filter can be observed to be a FIR filter, since its calculations do not use any of its past outputs. Z transform methods can be applied to study the properties of the filter cascade. The Z transform of the first filter stage given in equation (1) is: :(3) The Z transform of the second filter stage given in equation (2) is: :(4) The combined transfer function of the cascade of the two filter stages is then :(5) This can be transformed back to an equivalent time domain sequence, and the terms unrolled back to the first input term at index . :(6) 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Goertzel algorithm」の詳細全文を読む スポンサード リンク
|